In a multi-processing system, a group of processors execute a variety of tasks. Task data is transferred between the processors on one or more communications channels so that the processors may integrally process the tasks.
One type of multi-processing system has a host processor and multiple remote processors. The host processor has memory, typically in the form of Data Random Access Memory (DRAM). The remote processors also have memory. Typically each remote processor has its own DRAM, or it may share DRAM with other the remote processors. The remote processors communicate with the host processor on one or more busses.
The host processor commonly performs a central task while the remote processors perform tasks in support of the central task. A remote processor transfers task data to the host processor from the task being executed on the remote processor. To transfer the task data, the remote processor issues an interrupt to the host processor. Upon receiving an interrupt, the host processor reads the task data and informs the remote processor when the host processor is finished reading the task data. The host processor and the interrupting remote processor then resume processing their respective tasks.
In the prior art, a remote processor directly participates in the processing of an interrupt request. Each remote processor has an operating system or kernel. The kernel issues an interrupt request to the host processor. The kernel processes the interrupt request by controlling the format of the interrupt and supplying the host processor with interrupt data. The kernel must also inform tasks executing on the remote processor when the interrupt request has been completed. It is desirable to accomplish the execution of interrupt requests without involving the kernel of a remote processor so that the kernel and its remote processor are free to perform other tasks.